﻿using MapMaker.Engine.CoreCommon;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MapMaker.Engine.Model.VXAce
{
    public class RPG_Map
    {
        [RubyProperty("display_name")]
        public string DisplayName { get; set; }

        [RubyProperty("tileset_id")]
        public int TilesetID { get; set; }

        [RubyProperty("width")]
        public int Width { get; set; }

        [RubyProperty("height")]
        public int Height { get; set; }

        [RubyProperty("scroll_type")]
        public int ScrollType { get; set; }

        [RubyProperty("specify_battleback")]
        public bool SpecifyBattleback { get; set; }

        [RubyProperty("battleback1_name")]
        public string Battleback1Name { get; set; }

        [RubyProperty("battleback2_name")]
        public string Battleback2Name { get; set; }

        [RubyProperty("autoplay_bgm")]
        public bool AutoplayBackgroundMusic { get; set; }

        [RubyProperty("bgm")]
        public RPG_BGM BackgroundMusic { get; set; }

        [RubyProperty("autoplay_bgs")]
        public bool AutoplayBackgroundSound { get; set; }

        [RubyProperty("bgs")]
        public RPG_BGS BackgroundSound { get; set; }

        [RubyProperty("disable_dashing")]
        public bool DisableDashing { get; set; }

        [RubyProperty("encounter_list")]
        public List<RPG_Encounter> EncounterList { get; set; }

        [RubyProperty("encounter_step")]
        public int EncounterStep { get; set; }

        [RubyProperty("parallax_name")]
        public string ParallaxName { get; set; }

        [RubyProperty("parallax_loop_x")]
        public bool ParallaxLoopX { get; set; }

        [RubyProperty("parallax_loop_y")]
        public bool ParallaxLoopY { get; set; }

        [RubyProperty("parallax_sx")]
        public int ParallaxSX { get; set; }

        [RubyProperty("parallax_sy")]
        public int ParallaxSY { get; set; }

        [RubyProperty("parallax_show")]
        public bool ParallaxShow { get; set; }

        [RubyProperty("note")]
        public string Note { get; set; }

        [RubyProperty("data")]
        public object Data { get; set; }

        [RubyProperty("events")]
        public List<RPG_Event> Events { get; set; }

        public class RPG_Encounter
        {
            [RubyProperty("troop_id")]
            public int TroopID { get; set; }

            [RubyProperty("weight")]
            public int Weight { get; set; }

            [RubyProperty("region_set")]
            public int[] RegionSet { get; set; }
        }

        internal static IEnumerable<dynamic> Export(IObjectManager factory, IEnumerable list)
        {
            throw new NotImplementedException();
        }

    }
}
